Remove the transaction parameter from xenbus_switch_state and move the state
switch out of a transaction, in the few cases where it is inside one.
In order to behave properly, it is necessary for a driver to know its own
xenbus state (see changeset 9469:
b3cb19d2b07f, for example). This
value is stored as xenbus_device.state and updated by xenbus_switch_state.
If xenbus_switch_state occurs within a transaction, then there is a possibility
that the transaction would be aborted, leaving the state field dangerously out
of sync with the value currently in the store.
This fixes recent problems seen whereby bringing multiple devices up at the
same time results in some devices not coming up (often all of the even-numbered
ones, because of the pattern of transaction conflict).
Signed-off-by: Ewan Mellor <ewan@xensource.com>